minMatrix.js : perspective
minMatrix.js
構文 : matIV.perspective(fovy, aspect, near, far, dest)
引数 : fovy > 視野角
引数 : aspect > スクリーンのアスペクト比
引数 : near > ニアクリップ
引数 : far > ファークリップ
引数 : dest > 演算結果を格納する行列
プロジェクション変換行列を生成します。
尚、ここで生成されるのは一般的には 透視射影 と呼ばれる射影変換行列で、いわゆる遠近法の効果が現れます。
fovy には視野角を度数法で、
aspect にはスクリーンのアスペクト比(幅÷高さ)を、
near には前方クリップ位置(必ず 0 より大きな数値を指定)を、
far には後方クリップ位置(任意の数値)を指定します。
演算結果は dest に出力されます。
code:js
this.perspective = function(fovy, aspect, near, far, dest){
var t = near * Math.tan(fovy * Math.PI / 360);
var r = t * aspect;
var a = r * 2, b = t * 2, c = far - near;
dest0 = near * 2 / a;
dest1 = 0;
dest2 = 0;
dest3 = 0;
dest4 = 0;
dest5 = near * 2 / b;
dest6 = 0;
dest7 = 0;
dest8 = 0;
dest9 = 0;
dest10 = -(far + near) / c;
dest11 = -1;
dest12 = 0;
dest13 = 0;
dest14 = -(far * near * 2) / c;
dest15 = 0;
return dest;
};
dst の0,5,10,14
の要素以外が0
0,5,10は対角成分